/*---- license ----*/
/*-------------------------------------------------------------------------
 Coco.ATG -- Attributed Grammar
 Compiler Generator Coco/R,
 Copyright (c) 1990, 2004 Hanspeter Moessenboeck, University of Linz
 extended by M. Loeberbauer & A. Woess, Univ. of Linz
 with improvements by Pat Terry, Rhodes University.
 ported to C by Charles Wang <charlesw123456@gmail.com>

 This program is free software; you can redistribute it and/or modify it 
 under the terms of the GNU General Public License as published by the 
 Free Software Foundation; either version 2, or (at your option) any 
 later version.

 This program is distributed in the hope that it will be useful, but 
 WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 
 or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License 
 for more details.

 You should have received a copy of the GNU General Public License along 
 with this program; if not, write to the Free Software Foundation, Inc., 
 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

 As an exception, it is allowed to write an extension of Coco/R that is
 used as a plugin in non-free software.

 If not otherwise stated, any source code generated by Coco/R (other than 
 Coco/R itself) does not fall under the GNU General Public License.
-------------------------------------------------------------------------*/
/*---- enable ----*/
#ifndef  COCO_CcxParser_H
#define  COCO_CcxParser_H

#ifndef  COCO_ERRORPOOL_H
#include "c/ErrorPool.h"
#endif

#ifndef  COCO_CcxScanner_H
#include "Scanner4Xml.h"
#endif

/*---- hIncludes ----*/
/*---- enable ----*/

EXTC_BEGIN

/*---- SynDefines ----*/
/*---- enable ----*/

typedef struct {
    CcsErrorPool_t    errpool;
    CcxScanner_t      scanner;
    CcsToken_t      * t;
    CcsToken_t      * la;
    int               maxT;
    /*---- members ----*/
    /*---- enable ----*/
}  CcxParser_t;

CcxParser_t * CcxParser(CcxParser_t * self, FILE * infp, FILE * errfp);
CcxParser_t * CcxParser_ByName(CcxParser_t * self, const char * infp,
			       FILE * errfp);
void CcxParser_Destruct(CcxParser_t * self);
void CcxParser_Parse(CcxParser_t * self);
CcsBool_t CcxParser_Finish(CcxParser_t * self);

void CcxParser_SemErr(CcxParser_t * self, const CcsToken_t * token,
		      const char * format, ...);
void CcxParser_SemErrT(CcxParser_t * self, const char * format, ...);

EXTC_END

#endif /* COCO_CcxParser_H */
